import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import os
from scipy import stats

# 设置中文字体支持
try:
    plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'WenQuanYi Micro Hei', 'STXihei']
    plt.rcParams['axes.unicode_minus'] = False
    print("中文支持已启用")
except:
    print("中文支持设置失败，将使用英文")

# 读取Excel文件
file_path = 'E:/M/MathModel/23国赛C题/ds/附件5.xlsx'
sale = pd.read_excel(file_path, sheet_name='合并')
print("数据读取成功！总记录数:", len(sale))

# 数据预处理
# 转换日期格式
sale['销售日期'] = pd.to_datetime(sale['销售日期'])
# 过滤销售类型为"销售"的记录（排除退货）
sale = sale[sale['销售类型'] == '销售']

# 定义6个蔬菜类别
categories = ['花菜类', '花叶类', '辣椒类', '茄类', '食用菌', '水生根茎类']

# 创建日期范围（从最早到最晚日期）
start_date = sale['销售日期'].min()
end_date = sale['销售日期'].max()
all_dates = pd.date_range(start=start_date, end=end_date, freq='D')
print(f"日期范围: {start_date.strftime('%Y-%m-%d')} 至 {end_date.strftime('%Y-%m-%d')}")
print(f"总天数: {len(all_dates)}")

# 按日期和类别分组，计算每日总销量
# 创建一个空的DataFrame来存储结果
daily_sales = pd.DataFrame(index=all_dates)

# 填充每个类别的每日销售量
for category in categories:
    # 筛选当前类别的数据
    category_data = sale[sale['分类名称'] == category]

    # 按日期分组计算每日总销量
    category_daily = category_data.groupby('销售日期')['销量(千克)'].sum()

    # 重命名列
    category_daily = category_daily.rename(category)

    # 合并到主表
    daily_sales = daily_sales.join(category_daily)

# 填充缺失值为0
daily_sales = daily_sales.fillna(0)

# 计算皮尔逊相关系数
correlation_matrix = daily_sales.corr(method='pearson')

# 输出相关性结果
print("\n六大类蔬菜销售皮尔逊相关系数矩阵:")
print(correlation_matrix)


